Android三种基本的加载网络图片方式

转自:http://www.oschina.net/code/snippet_1470644_36944

Android三种基本的加载网络图片方式,包括普通加载网络方式、用ImageLoader加载图片、用Volley加载图片。
标签: <无>

代码片段(6)[全屏查看所有代码]

1. [代码]普通加载网络方式     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public class NormalLoadPictrue {
     
     private String uri;
     private ImageView imageView;
     private byte [] picByte;
     
     
     public void getPicture(String uri,ImageView imageView){
         this .uri = uri;
         this .imageView = imageView;
         new Thread(runnable).start();
     }
     
     @SuppressLint ( "HandlerLeak" )
     Handler handle = new Handler(){
         @Override
         public void handleMessage(Message msg) {
             super .handleMessage(msg);
             if (msg.what == 1 ) {
                 if (picByte != null ) {
                     Bitmap bitmap = BitmapFactory.decodeByteArray(picByte, 0 , picByte.length);
                     imageView.setImageBitmap(bitmap);
                 }
             }
         }
     };
 
     Runnable runnable = new Runnable() {
         @Override
         public void run() {
             try {
                 URL url = new URL(uri);
                 HttpURLConnection conn = (HttpURLConnection)url.openConnection();
                 conn.setRequestMethod( "GET" );
                 conn.setReadTimeout( 10000 );
                 
                 if (conn.getResponseCode() == 200 ) {
                     InputStream fis =  conn.getInputStream();
                     ByteArrayOutputStream bos = new ByteArrayOutputStream();
                     byte [] bytes = new byte [ 1024 ];
                     int length = - 1 ;
                     while ((length = fis.read(bytes)) != - 1 ) {
                         bos.write(bytes, 0 , length);
                     }
                     picByte = bos.toByteArray();
                     bos.close();
                     fis.close();
                     
                     Message message = new Message();
                     message.what = 1 ;
                     handle.sendMessage(message);
                 }
                 
                 
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
     };
     
}

2. [代码]用ImageLoader加载图片     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class ImageLoaderPicture {
     
     private DisplayImageOptions options;
 
     public ImageLoaderPicture(Context context) {
         
         ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2 )
         .denyCacheImageMultipleSizesInMemory()
         .discCacheFileNameGenerator( new Md5FileNameGenerator())
         .tasksProcessingOrder(QueueProcessingType.LIFO).enableLogging()
         .memoryCache( new WeakMemoryCache())                                
         .build();
         ImageLoader.getInstance().init(config);
         
         options = new DisplayImageOptions.Builder()
         .showStubImage( 0 )
         .showImageForEmptyUri( 0 )
         .showImageOnFail( 0 )
         .cacheInMemory().cacheOnDisc()
         .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
         .bitmapConfig(android.graphics.Bitmap.Config.RGB_565)
         .build();
     }
 
     public DisplayImageOptions getOptions() {
         return options;
     }
 
     public void setOptions(DisplayImageOptions options) {
         this .options = options;
     }
     
     
}

3. [代码]用Volley加载图片     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class VolleyLoadPicture {
     
     private ImageLoader mImageLoader = null ;
     private BitmapCache mBitmapCache;
     
     private ImageListener one_listener;
     
     public VolleyLoadPicture(Context context,ImageView imageView){
         one_listener = ImageLoader.getImageListener(imageView, 0 , 0 );
         
         RequestQueue mRequestQueue = Volley.newRequestQueue(context);
         mBitmapCache = new BitmapCache();
         mImageLoader = new ImageLoader(mRequestQueue, mBitmapCache);
     }
 
     public ImageLoader getmImageLoader() {
         return mImageLoader;
     }
 
     public void setmImageLoader(ImageLoader mImageLoader) {
         this .mImageLoader = mImageLoader;
     }
 
     public ImageListener getOne_listener() {
         return one_listener;
     }
 
     public void setOne_listener(ImageListener one_listener) {
         this .one_listener = one_listener;
     }
     
     class BitmapCache implements ImageCache {
         private LruCache<String, Bitmap> mCache;
         private int sizeValue;
         
         public BitmapCache() {
             int maxSize = 10 * 1024 * 1024 ;
             mCache = new LruCache<String, Bitmap>(maxSize) {
                 @Override
                 protected int sizeOf(String key, Bitmap value) {
                     sizeValue = value.getRowBytes() * value.getHeight();
                     return sizeValue;
                 }
                 
             };
         }
 
         @Override
         public Bitmap getBitmap(String url) {
             return mCache.get(url);
         }
 
         @Override
         public void putBitmap(String url, Bitmap bitmap) {
             mCache.put(url, bitmap);
         }
     }
     
 
}

4. [代码]Activity     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class MainActivity extends Activity {
     
     private ImageView imageView001,imageView002,imageView003;
     
     public static final String picUrl = "http://img.quwenjiemi.com/2014/0701/thumb_420_234_20140701112917406.jpg" ;
     //public static final String picUrl = "http://192.168.1.181:8081/AndroidSerivces/house.jpg";
     
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         imageView001 = (ImageView)findViewById(R.id.imageView001);
         imageView002 = (ImageView)findViewById(R.id.imageView002);
         imageView003 = (ImageView)findViewById(R.id.imageView003);
         
         //用普通方法加载图片
         new NormalLoadPictrue().getPicture(picUrl,imageView001);
         
         //用ImageLoader加载图片
         ImageLoader.getInstance().displayImage(picUrl, imageView002, new ImageLoaderPicture( this ).getOptions(), new SimpleImageLoadingListener());
         
         //用Volley加载图片
         VolleyLoadPicture vlp = new VolleyLoadPicture( this , imageView003);
         vlp.getmImageLoader().get(picUrl, vlp.getOne_listener());
     }
     
 
}

5. [代码]布局文件     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<ScrollView xmlns:android= "http://schemas.android.com/apk/res/android"
     xmlns:tools= "http://schemas.android.com/tools"
     android:layout_width= "match_parent"
     android:layout_height= "match_parent"
     tools:context= ".MainActivity" >
 
     <RelativeLayout
         android:layout_width= "match_parent"
         android:layout_height= "match_parent"
         android:padding= "10dp" >
     
     <TextView
         android:id= "@+id/textView001"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content"
         android:text= "1.用普通方法的加载图片" />
     
     <ImageView
         android:id= "@+id/imageView001"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content"
         android:layout_below= "@+id/textView001" />
     
     
     <TextView
         android:id= "@+id/textView002"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content"
         android:layout_below= "@+id/imageView001"
          android:text= "2.用Android-Universal-Image-Loader加载图片" />
     
     <ImageView
         android:id= "@+id/imageView002"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content"
          android:layout_below= "@+id/textView002" />
     
     
     <TextView
         android:id= "@+id/textView003"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content"
         android:layout_below= "@+id/imageView002"
          android:text= "3.用Volley加载图片" />
     
     <ImageView
         android:id= "@+id/imageView003"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content"
          android:layout_below= "@+id/textView003" />
     
     </RelativeLayout>
 
</ScrollView>

6. [文件] 三种基本网络加载图片方式.rar ~ 2MB     下载(873)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值